package 所有的题类.ZA.链表;

import com.kiwi.nixu.common.LNode;

import java.util.Arrays;
import java.util.List;

public class 删除链表中等于给定值val的所有节点 {

    public static void main(String[] args) {
        LNode lNode = arrayToLNode(Arrays.asList(1,2,6,3,4,5,6));
        LNode lNode1 = removeElements(lNode, 6);
        System.out.println(lNode1.data);
    }

    public static LNode removeElements(LNode head, int val) {
        //构建伪头结点
        LNode p=new LNode(-1);
        LNode pp=p;
        p.next=head;
        while(head!=null){
            if(head.data==val){
                LNode tmp=head.next;
                if(tmp!=null){
                    p.next=tmp;
                    head=tmp;
                }else{
                    p.next=tmp;
                    p=tmp;
                    head=null;
                }
            }else{
                head=head.next;
                p=head;
            }
        }
        return pp;
    }

    public static LNode arrayToLNode(List<Integer> list){
        LNode lNode = new LNode(list.get(0));
        LNode cur=lNode;
        for (int i = 1; i < list.size(); i++) {
            LNode tmp=new LNode(list.get(i));
            cur.next=tmp;
            cur=tmp;
        }
        return lNode;
    }
}
